//直接使用字面量进行类型声明（同时赋值）
export {}
let a:10;//a定义为number并且赋值为10
let b:"male" | false;//可以使用 | 来连接多个类型（联合类型）

//any表示任意类型，ts不对该变量进行类型检测
//let d: any;
//声明变量不指定类型，自动判断变量的类型为any
let d;
d=10;
d='hello'

//unknown表示未知类型的值
let e :unknown;

let s :string;
//d的类型时any，他可以赋值给任意变量
s = d;
//unknown变量赋值给别的变量会报错
//unknown是一个类型安全的any,并且unknown类型的变量不能赋值给其他变量
if(typeof e === 'string'){
    s = e;
}
//类型断言,可以用来告诉解析器变量实际的类型
/**
 * 语法：
 *  变量 as 类型
 *  <类型>变量
 */
s = e as string;
s = <string>e;

//void表示空，以函数为例，表示没有返回值的函数
function fn():void{
    return null;
}

//never表示永远不会返回结果
function fn2():never{
    throw new Error('报错了！')
}